The present invention relates to multi-processor computing systems which exchange messages between processors/co-processors. Specifically, the invention is directed to processors which execute multiple threads where each thread can request the services of a co-processor for executing a sub-set of instructions to obtain data needed to finish execution of a thread.
Advances in computing systems have resulted by executing a program using distributed computation among a plurality of processors. In these multiple processor systems, one processor may begin executing a thread of instructions which requires additional information which is obtained from a linked co-processor. This requires a messaging protocol to invoke the co-processor to execute a set of dedicated instructions and to forward the results of the co-processor so that execution may continue.
An additional benefit of using linked multi-processors results when one of the processors is executing multiple threads of an execution sequence of the same program. By using the multi-thread processing system, it is possible when one thread is waiting for data from a co-processor to continue processing by executing other threads of the program. Thus, by declaring many threads within the confines of a single program, a parallelism is achieved which ultimately improves the overall processing speed for the program.
The performance of a multi-processor system, however, depends on a number of factors, such as the flow control of information between processors, scheduling of requests to a co-processor, and the time to setup and tear down connections between processors and co-processors. In a multi-processor/multi-thread environment, messaging between processors becomes even more complicated. Each thread in a multi-threaded processor must be aware of its own thread identity, at least to the extent that different index registers for each thread would have to be initialized for each thread to access thread specific data. Each thread would have to set-up independent Direct Memory Access (DMA) or message control blocks (MCB) since each thread requires private message buffers and response buffers. The duplication of message control blocks for each thread requires a significant increase in local high-speed memory for each processor. Additionally, the specific thread requesting services from a co-processor must be notified when the result is received, so that execution of the thread may proceed. The complications of a multi-thread execution which relies upon another processor for support are alleviated by the messaging protocol of the present invention.